﻿using J.StatusModel;
using J.StatusModel.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StatusService
{
    public interface IBookingService
    {
        //办理预定(添加预定表)
        Task<int> AddBooking(BookingModel model);
        //添加预定和房型关系表
        Task<int> AddBookingRoom(List<BookingRoomModel> models);
        //添加订单表
        Task<int> AddOrders(int roomNum, string Townhouse, int RoomTypeId, int BookingId);
        //办理保留
        Task<int> TransactionRetain(int Id, RoomState state, int roomNumber, ReserveModel? info);
        //办理维修
        Task<int> TransactionMaintain(int Id, RoomStates state);
        //办理脏房
        Task<int> TransactionPigsty(int Id, RoomStates state);
        //修改房态为预定
        Task<int> UpdBookingState(List<BookingRoomModel> model);
        //退房
        Task<int> UpdReturnState(int roomNum);
        //取消预定
        Task<int> UpdCancel(int roomNum);
        //(房态页面)办理入住
        Task<int> AddStay(StayModel model);
        //取消排房
        Task<int> CancelTownhouse(int orderId,int roomNum);
        //办理排房
        Task<int> TransactRoom(int orderId, int roomNum);
        //根据房号找到该房号最近的订单
        Task<StayDto> GetStayDto(int roomNum);
        //所有保留显示
        Task<List<ReserveModel>> RetainShowAll();
        //显示用户信息
        Task<List<SlotDto>> SlotDtoShow(RoomState state);
        //办理退房修改原房号的状态为空房
        Task<int> UpdateRoomState(int roomStareNumber, int roomEndNumber);
        //返回办理排房下的房号下拉框
        Task<List<RoomNumManage>> GetRoomNum(int roomTypeId);
        //返回某房间的自定义价格
        Task<object> GetPrice(int roomNumber);
        //办理结算
        Task<int> HandleSettlement(int Id, SettlementModel? info);
        //结算记录
        Task<List<SettlementModel>> SettlementShow();
        //今日预订信息
        Task<List<BookingModel>> BookingShow();
        //今日入住信息
        Task<List<SlotDto>> StayShow();
        //新顾客信息
        Task<List<BookingModel>> NewPeopleShow();
        //今日在线预订信息
        Task<List<BookingModel>> OnLineBookingShow();
    }
}
